package dw.fastfile.common.annotations;

import dw.fastfile.common.enums.ExportFormatEnum;
import dw.fastfile.common.validation.DictValidation;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 字典注解，用于字段上
 * 1.前端页面请求接口数据校验
 * 2.表格导入校验、转换name转code
 * 3.表格导入转换code转name
 *
 * @author lenovo
 */
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Constraint(validatedBy = DictValidation.class)
@Retention(RetentionPolicy.RUNTIME)
public @interface Dict {
    /**
     * 字典类型
     *
     * @return
     */
    String dictType();

    /**
     * 导出格式转换规则
     *
     * @return
     */
    ExportFormatEnum exportFormat() default ExportFormatEnum.name;

    /**
     * 校验错误提示
     *
     * @return
     */
    String message() default "枚举类型校验出错，请检查";

    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};

}
